package modelo;

public class TarifaIndConTransporte extends Industrial implements Comparable<TarifaIndConTransporte> {
	
	private Integer topeSinTransporte;
	private float recargo;

	public TarifaIndConTransporte(Factura f, String desc, float valor, float ib, Integer topeSinTransporte, float iva, float recargo, boolean estado) {
		super(f, desc, valor, ib, iva, estado);
		this.topeSinTransporte=topeSinTransporte;
		this.setRecargo(recargo);
	}
	
	public Factura liquidarTarifa(Usuario ui){
		if(f==null){
			if(ui.getUltMedicion()>this.getTopeSinTransporte()){
				f = new Factura(ui);
				float ultmedicion=ui.getUltMedicion();
				float subtotal=ultmedicion*this.getValorTarifa();
				f.setMedicionActual(ultmedicion);
				f.addItem(new ItemFactura("Tarifa Ind C/Sub", subtotal, f.getNroFac()));
				float totaliva=subtotal*this.getIva()-subtotal;
				f.addItem(new ItemFactura("IVA", totaliva, f.getNroFac()));
				float costoTransporte=subtotal*this.getRecargo()-subtotal;
				f.addItem(new ItemFactura("Costo Transporte", costoTransporte, f.getNroFac()));
				f.addItem(new ItemFactura(this.getDescripcion(), costoTransporte, f.getNroFac()));
				f.setImporte(totaliva+subtotal+costoTransporte);
			}
			
			return f;
		}
		return null;
	}
	
	public Integer getTopeSinTransporte() {
		return topeSinTransporte;
	}

	public void setTopeSinTransporte(Integer topeSinTransporte) {
		this.topeSinTransporte = topeSinTransporte;
	}

	public int compareTo(TarifaIndConTransporte tict) {
		int result=this.getTopeSinTransporte().compareTo(tict.getTopeSinTransporte());
		return result;
	}

	public float getRecargo() {
		return recargo;
	}

	public void setRecargo(float recargo) {
		this.recargo =1+(recargo/100);
	}
	
}
